`ifndef _ral_reg_PPU_REG_ppu_reg_SPT_HEAD_ERR_CNT_rtl_
`define _ral_reg_PPU_REG_ppu_reg_SPT_HEAD_ERR_CNT_rtl_

`include "vmm_ral_rc_field_rtl.sv"
`include "vmm_ral_notifier_rtl.sv"


module ral_reg_PPU_REG_ppu_reg_SPT_HEAD_ERR_CNT_rtl(input  clk,
                                    input  rstn,
                                    input  [31:0] hst_wdat,
                                    output [31:0] hst_rdat,
                                    input  [3:0] hst_sel,
                                    input  hst_wen,
                                    output [31:0] head_err_cnt_out,
                                    output head_err_cnt_rd, head_err_cnt_wr,
                                    input  [31:0] head_err_cnt_in,
                                    input  head_err_cnt_wen);

vmm_ral_rc_field_rtl #(8, ('h0 & 'hff))
   head_err_cnt_7_0(clk, rstn, head_err_cnt_out[7:0],
   hst_wdat[7:0], hst_sel[0], hst_wen,
   head_err_cnt_in[7:0], head_err_cnt_wen);

vmm_ral_rc_field_rtl #(8, ('h0 & 'hff00) >> 8)
   head_err_cnt_15_8(clk, rstn, head_err_cnt_out[15:8],
   hst_wdat[15:8], hst_sel[1], hst_wen,
   head_err_cnt_in[15:8], head_err_cnt_wen);

vmm_ral_rc_field_rtl #(8, ('h0 & 'hff0000) >> 16)
   head_err_cnt_23_16(clk, rstn, head_err_cnt_out[23:16],
   hst_wdat[23:16], hst_sel[2], hst_wen,
   head_err_cnt_in[23:16], head_err_cnt_wen);

vmm_ral_rc_field_rtl #(8, ('h0 & 'hff000000) >> 24)
   head_err_cnt_31_24(clk, rstn, head_err_cnt_out[31:24],
   hst_wdat[31:24], hst_sel[3], hst_wen,
   head_err_cnt_in[31:24], head_err_cnt_wen);


vmm_ral_notifier_rtl _n_head_err_cnt(clk, rstn, |hst_sel[3:0], hst_wen, head_err_cnt_rd, head_err_cnt_wr);


assign hst_rdat[31:0] = { head_err_cnt_out };


endmodule

`endif
